package net.siufung.boot.datasource.rules;

import java.util.Arrays;
import java.util.Locale;

/**
 * @author 陈建峰
 * @since 2022/8/11 5:16 下午
 */
public interface IDbKeyWordsHandler {

    /**
     * 获取关键字
     * @return 关键字集合
     */
    String[] getKeyWords();

    /**
     * 格式化关键字格式
     * @return 格式
     */
    String getFormatStyle();

    /**
     * 是否为关键字
     * @param columnName 字段名称
     * @return 是否为关键字
     */
     default boolean isKeyWords(String columnName){
         return Arrays.stream(getKeyWords())
                 .anyMatch(element -> element.equals(columnName.toUpperCase(Locale.ENGLISH)));
     }

    /**
     * 格式化字段
     * @param columnName 字段名称
     * @return 格式化字段
     */
    default String formatColumn(String columnName) {
        return String.format(getFormatStyle(), columnName);
    }

    /**
     * 配置数据类型
     * @return 数据类型
     */
    IDbType getDbType();

}
